const request = (config: UniApp.RequestOptions) => {
  let url: string
  url = import.meta.env.VITE_SERVER_NAME + config.url
  // const token = localStorage.getItem('token')
  // const token = ''
  const token = uni.getStorageSync('token')
  let Token = token ? token : null
  if (Token) {
    config.header = {
      ...config.header,

      token: Token,
    }
  }

  return new Promise((resolve, reject) => {
    uni.request({
      ...config,
      url,

      timeout: config.timeout || 60000,
      header: {
        ...config.header,

        'Content-Type': 'application/json;charset=UTF-8',
      },
      success(res) {
        // 200状态码表示成功
        if (res.statusCode === 200) {
          resolve(res.data)
          return
        } else if (res.statusCode === 401) {
          uni.showToast({
            title: '请先登录后在访问。',
            icon: 'none',
          })
          setTimeout(() => {
            uni.navigateTo({
              url: '/pages/login/index',
            })
          }, 1000)
        } else {
          uni.showToast({
            title: '接口异常',
            icon: 'none',
          })
        }

        reject(res.data)
      },
      fail(result) {
        reject(result)
      },
    })
  })
}

export default {
  /**
   * get请求
   * @param url 请求地址
   * @param data 请求的参数
   * @param options 其他请求配置
   */
  get: (
    url: string,
    data?: UniApp.RequestOptions['data'],
    options?: UniApp.RequestOptions
  ) => {
    return request({
      ...options,
      url,
      data,
      method: 'GET',
    })
  },
  /**
   * post请求
   * @param url 请求地址
   * @param data 请求的参数
   * @param options 其他请求配置
   */
  post: (
    url: string,
    data?: UniApp.RequestOptions['data'],
    options?: UniApp.RequestOptions
  ) => {
    return request({
      ...options,
      url,
      data,
      method: 'POST',
    })
  },
}
